package com.cskaoyan.javase.oop1._10packing;
/**
 * 包装类的特点
 *      1.最重要的特点,"自动拆装箱"
 *          在Java当中，把基本数据类型变量，转换为其对应包装类的引用数据类型变量，称之为"装箱"
 *              基本数据类型 --> 对象 这叫装箱
 *          在Java当中，把包装类的引用数据类型类型变量，转换为其对应基本数据类型变量，称之为"拆箱"
 *              对象 --> 基本数据类型 这叫拆箱
 *     Java中的"拆箱"和"装箱"都是自动进行的，基本数据类型变量和它的包装类引用数据类型变量，可以自由、自动的互相转换。
 *     自动拆装箱意味着，多数情况下，基本数据类型和它的包装类可以混用（当然也有不能混用的情况）
 *
 *     2.包装类中存在和对应类型相关的一些常用属性,比如最大值,最小值,所占位数等等.
 *     3.包装类中还存在和对应类型相关的一些常用操作,比如进制转换,类型转换等等
 *          比较常用的方法的,就是包装类类名.parseXxx(String)
 *          将字符串转换成各种基本数据类型变量
 *
 * @since 10:10
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo3 {
    public static void main(String[] args) {
        /*
            自动拆装箱
            实际上这不是什么高端的技巧
            本质上这是通过底层自动调用方法实现,方法调用了,只是程序员没有看到而已
         */
        Integer a = 120;
        int b = a;

        // 装箱依赖于包装类型valueOf
        // Unnecessary boxing 'Integer.valueOf(120)'
        Integer c = Integer.valueOf(120);
        // 拆箱依赖于包装类型对象的xxxValue方法
        // Unnecessary unboxing 'c.intValue()'
        int num = c.intValue();

        // String --> int
        int i = Integer.parseInt("123");
        double v = Double.parseDouble("0.1");

    }
}
